pridavani komponent za behu a repaint
Otázka od: Karolina Nemanska
5. 4. 2004 15:53
Opet zdravim!
Za behu vytvarim komponenty ve scrollboxu - vse se dari az na to, ze v miste
scrollboxu zustane po zavreni formu nekolik neprekreslenych mist - a ty
nezmizi ani po volani form.update pripadne scrollbox.repaint. Zajimave, ze
to dela v XP, ve Win98 zda se ze ne...
Zdrojak vypada takhle - delam neco spatne?
Karolina
procedure TForm1.Button2Click(Sender: TObject);
var p:TPanel;
l:TLabel;
l2:Tlabel;
b:Tbutton;
var i,j:integer;
s:string;
begin
p:=Tpanel.Create(form2.ScrollBox1);
p.Parent:=form2.ScrollBox1;
p.Align:=alTop;
p.Caption:='';
l:=Tlabel.Create(p);
l.parent:=p;
l.Top:=0;
l.left:=0;
l.caption:='pokus';
b:=tbutton.Create(p);
b.Parent:=p;
b.Caption:='x';
b.Width:=15;
b.height:=15;
b.Left:=p.Width-b.Width;
b.Top:=0;
b.Anchors:=[akRight,akTop];
b.OnClick:=Button4Click;
s:='';
for i:=0 to random(15)+10 do begin
for j:=0 to random(10)+4 do begin
s:=s+chr(random(27)+ord('a'));
end;
s:=s+' ';
end;
l2:=tlabel.create(p);
l2.OnMouseMove:=zmenbarvu;
l2.WordWrap:=true;
l2.Top:=15;
l2.AutoSize:=true;
l2.constraints.MaxWidth:=p.width;
l2.constraints.minWidth:=p.width;
l2.caption:=s;
l2.color:=$0093C9FF;
p.Height:=l2.Height+15;
end;
Odpovedá: Radim Kunz
5. 4. 2004 16:16
Karolina Nemanska napsal(a):
>Opet zdravim!
>Za behu vytvarim komponenty ve scrollboxu - vse se dari az na to, ze v miste
>scrollboxu zustane po zavreni formu nekolik neprekreslenych mist - a ty
>nezmizi ani po volani form.update pripadne scrollbox.repaint. Zajimave, ze
>to dela v XP, ve Win98 zda se ze ne...
>Zdrojak vypada takhle - delam neco spatne?
>
>Karolina
>
>
Mozna to neni tim, ale majitelem komponenty by mel byt formular.
>procedure TForm1.Button2Click(Sender: TObject);
>var p:TPanel;
> l:TLabel;
> l2:Tlabel;
> b:Tbutton;
> var i,j:integer;
> s:string;
>begin
> p:=Tpanel.Create(form2.ScrollBox1);
>
>
p := TPanel.Create(form2);
nebo jeste lip
p := TPanel.Create(Self);
> p.Parent:=form2.ScrollBox1;
> p.Align:=alTop;
> p.Caption:='';
> l:=Tlabel.Create(p);
>
>
l := TLabel.Create(Self);
atd.
Radim
Odpovedá: Petr Brada, uniCODE systems
6. 4. 2004 8:56
> Opet zdravim!
> Za behu vytvarim komponenty ve scrollboxu - vse se dari az na to, ze v
miste
> scrollboxu zustane po zavreni formu nekolik neprekreslenych mist - a ty
> nezmizi ani po volani form.update pripadne scrollbox.repaint. Zajimave, ze
> to dela v XP, ve Win98 zda se ze ne...
Mne se na formular s takovymito neprekreslenymi misty osvedcilo pouziti API
funkce
RedrawWindow(WinControl.Handle,nil,0,RDW_ERASE or RDW_FRAME or
RDW_INVALIDATE or RDW_ALLCHILDREN);
Petr